/**
 * jims
 */
package com.jims.master.modules.nurse.service;

import java.util.List;

import com.jims.master.common.utils.StringUtils;
import com.jims.master.modules.sys.utils.UserUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.jims.master.common.persistence.Page;
import com.jims.master.common.service.CrudService;
import com.jims.master.modules.nurse.entity.BedRec;
import com.jims.master.modules.nurse.dao.BedRecDao;

/**
 * 床位管理Service
 *
 * @author 赵宁
 * @version 2017-03-27
 */
@Service
@Transactional(readOnly = true)
public class BedRecService extends CrudService<BedRecDao, BedRec> {
    @Autowired
    private BedRecDao bedRecDao;

    public BedRec get(String id) {
        return super.get(id);
    }

    public List<BedRec> findList(BedRec bedRec) {
        return super.findList(bedRec);
    }

    public Page<BedRec> findPage(Page<BedRec> page, BedRec bedRec) {
        return super.findPage(page, bedRec);
    }

    @Transactional(readOnly = false)
    public int saveBedRec(BedRec bedRec) {
        int num = 0;
        String orgDeptId = UserUtils.getUser().getOrgDept().getId();
        bedRec.setWordCode(orgDeptId);
        bedRec.setBedOccupy("0");
        bedRec.setDeptId(orgDeptId);
       /*  String bedRecId = bedRec.getId();
       BedRec bedRecNo = null;
        //查询床号和床标号是否重复
        if (bedRecId.equals("") || bedRecId==null) {
            String bedNo = String.valueOf(bedRec.getBedNo());
            String bedLabel = bedRec.getBedLabel();
            String noLabel = bedNo + "," + bedLabel;
            bedRecNo = bedRecDao.findbedRecNo(orgDeptId,orgDeptId,noLabel);
        }
        if (bedRecNo == null) {*/
            num = super.save(bedRec);
      /*  } else {
            num = -3;
        }*/
        return num;
    }

    @Transactional(readOnly = false)
    public int delete(BedRec bedRec) {
        return super.delete(bedRec);
    }

    /**
     * 检查该科室是否已经有此床位号
     * @author 陈涛
     * @return
     */
    public List<BedRec> findbedRecNo(BedRec bedRec) {
        return bedRecDao.findbedRecNo(bedRec);
    }

    /**
     * 在床位病人列表
     * @return
     * @author 陈涛
     */
    public List<BedRec> inBedList(BedRec bedRec) {
        return bedRecDao.inBedList(bedRec);
    }
    /**
     * 根据条件查询床位信息
     * @param bedRec
     * @return
     * @author CTQ
     * @date 2017-07-22 14:46:20
     */
    public BedRec findBedRecByParams(BedRec bedRec){
        return dao.findBedRecByParams(bedRec);
    }

    /**
     * 没有病人的床位列表
     *
     * @param bedRec
     * @return
     * @author 陈涛
     */
    public List<BedRec> notInBedList(BedRec bedRec) {
        return bedRecDao.notInBedList(bedRec);
    }

    /**
     * 检查是否有此床位
     *
     * @param bedRec
     * @return
     * @author 陈涛
     */
    @Transactional(readOnly = false)
    public BedRec getByBedNo(BedRec bedRec) {
        return bedRecDao.getByBedNo(bedRec);
    }

    /**
     * 换床操作
     *
     * @param bedRec
     * @param bedRecNew
     * @return
     * @author 陈涛
     */
    @Transactional(readOnly = false)
    public int umbetten(BedRec bedRec, BedRec bedRecNew) {
        int i = 0;
        String patientId = bedRec.getPatientId();
        String visitId = bedRec.getVisitId();
        bedRec.setPatientId(null);
        bedRec.setVisitId(null);
        bedRec.setBedStatus("1");
        super.save(bedRec);
        bedRecNew.getId();
        bedRecNew.setPatientId(patientId);
        bedRecNew.setVisitId(visitId);
        bedRecNew.setBedStatus("0");
        i = super.save(bedRecNew);
        return i;
    }

    /**
     * 包床
     *
     * @param ids
     * @param bedRec
     * @return
     * @author 陈涛
     */
    @Transactional(readOnly = false)
    public int updateBedOccupy(String[] ids, BedRec bedRec) {
        int j = 0;

        for (int i = 0; i < ids.length; i++) {
            String id = ids[i];
            bedRec.setId(id);
            if(StringUtils.isNotBlank(bedRec.getBedOccupy())){
                if (bedRec.getBedOccupy().equals("0")){
                    bedRec.setBedStatus("1");
                }else {
                    bedRec.setBedStatus("0");
                }
                j = bedRecDao.updateBedOccupy(bedRec);
            }

        }
        return j;
    }

    /**
     * 查询当前病区空床列表
     *
     * @param bedRec
     * @return
     * @author CTQ
     */
    public List<BedRec> findEmptyBedList(String q, String limit, BedRec bedRec) {
        return dao.findEmptyBedList(q, limit, bedRec);
    }

    /**
     * 护士端病人床位列表
     * @param bedRec
     * @return
     */
    public List<BedRec> bedPatientList(BedRec bedRec){
        return dao.bedPatientList(bedRec);
    }

    /**
     * 验证病人是否有包床
     * @param bedRec
     * @return
     * @author CTQ
     */
    public int validBedOccupy(BedRec bedRec){
        return dao.validBedOccupy(bedRec);
    }
    /**
     * 根据房间号获取最大床号
     * @param bedRec
     * @return
     * @author CTQ
     * @date 2017-07-26 21:55:05
     */
    public int findMaxBedNo(BedRec bedRec){
        return dao.findMaxBedNo(bedRec);
    }

}